Network performance tuner

ABSTRACT

Described herein are techniques to facilitate the improvement of network throughput. An implementation described herein measures throughput over a data-communications network and between at least two endpoints on the network. This implementation also displays a graphical representation depicting the present throughput of the network as it is measured. The graphical representation has an identified target throughput threshold, and that threshold is indicative of an acceptable level of throughput for the usage being targeted, such as high-quality video streaming.

TECHNICAL FIELD

This invention generally relates to a technology that facilitates tuningthe performance of a data-communications network.

BACKGROUND

With the current state of available home wireless network technology,there are significant limitations to delivering a quality videoexperience. Customers often experience intermittent interference andless than optimal throughput over typical wireless networks. When notused for video, performance issues with wireless networks often gounnoticed, because non-video uses rarely push the limits of a wirelessnetwork's performance capabilities. For example, web pages continue toload and email is still sent via a network operating at less than fullcapacity. The fact that there may have been a short-term glitch, or thatthe maximum possible bandwidth is momentarily unavailable, causes onlyminor degradations in the experience.

Streaming high fidelity multimedia (e.g., video and audio) data over atypical home wireless network pushes existing affordable and widelyavailable wireless home networking technologies to their limits. Becauseof this, even relatively minor transmission/reception issues result ineffects that may be described as “glitchy,” “jerky,” “stop-and-start,”and the like. Since these effects are easily noticed by the customers,multimedia electronics producers and data service providers strive toreduce the occurrence of glitches.

However, often there are many practical actions that a customer can takewhich will affect the overall performance of a wireless networkingenvironment. For example, fine adjustments to and placement of wirelessequipment can affect the overall performance. Unfortunately, thecustomer typically does not know what action can be taken to prevent orameliorate performance issues in a glitch-prone wireless networkingenvironment.

Conventionally, a customer does not know if there is a problem withnetwork throughput. The customer does not know what network changes tomake that may actually improve throughput. Furthermore, the customer isunable to actively monitor the network throughput in order to see theeffects of making network changes.

SUMMARY

Described herein are techniques to facilitate the improvement of networkthroughput. An implementation described herein measures throughput overa data-communications network and between at least two endpoints on thenetwork. This implementation also displays a graphical representationdepicting the present throughput of the network as it is measured. Thegraphical representation has an identified target throughput threshold,and that threshold is indicative of an acceptable level of throughputfor the usage being targeted, such as high-quality video streaming.

BRIEF DESCRIPTION OF THE DRAWINGS

The same numbers are used throughout the drawings to reference likeelements and features.

FIG. 1 shows an example of a typical wireless networking scenario withinwhich one or more implementations described herein may operate.

FIGS. 2, 3, and 4 illustrate an example of a user-interface inaccordance with at least one implementation described herein.

FIG. 5 shows operational components of an exemplary network-performancetuner in accordance with at least one implementation described herein.

FIG. 6 illustrates a flow diagram showing a methodologicalimplementation described herein.

FIG. 7 is an example of a computing operating environment capable of(wholly or partially) implementing at least one embodiment describedherein.

DETAILED DESCRIPTION

The following description sets forth techniques that help a user tunethe performance of a communications network to a desired level. Forexample, a user may tune the throughput of a wireless network so that itsustains a desired level of throughput for streaming multimedia dataover the wireless network.

Exemplary Scenario

FIG. 1 illustrates, at a high-level, the environmental context of anetwork-performance tuner 100, as described herein, in an exemplary homewireless network scenario. The tuner 100 itself is, for example, aprogram module executing within a primary memory system 102 (e.g.,volatile or non-volatile memory) of a computer 110. This computer may bea general- or special-purpose computer in this illustrated scenario.FIG. 7 depicts another computer system on which the tuner 100 mayoperate.

The computer 110 (or another network accessible computer) may be runningan integrated multimedia software product, such as the Microsoft®Windows® XP Media Center™ Edition integrated multimedia & entertainmentproduct. Using such an integrated multimedia product, a user may enjoyan integrated home entertainment experience that includes photos, music,television programming, videos, and the like.

The exemplary scenario depicted in FIG. 1 shows a house 120 with atypical wireless network. FIG. 1 also depicts a plan view of the samehouse. For the sake of simplicity and brevity, the house is shown withjust four rooms: a living room 122, a kitchen 124, a dining room 126,and a study 128. While the house 120 depicted in FIG. 1 is small, thoseof ordinary skill in the art understand that the house (and thus thenetworking environment) may be substantially larger than the exampleshown in FIG. 1.

Isabel 130, the user in this scenario, purchases a new wirelessmultimedia set-top box 140 and brings it home (e.g., house 120) toinstall. Isabel connects the set-top box to her television (TV) 142 inher living room 122 of the house 120. An example of the set-top box 140is the Microsoft® Windows® XP™ Media Center™ Extender set-top box.

The set-top box 140 takes advantage of her home wireless network tocommunicate with her integrated multimedia software product installed onher computer 110 in her study 128. Isabel 130 may gather the family inthe living room 122 to watch her TV 142. After pressing a few buttons onher comfortable and familiar remote control, Isabel and her family enjoyexperiencing the videos, television programming, music, and photos thatare stored on her computer 110, which is located in a different room(e.g., her study 128) of the home.

After physically coupling the set-top box 140 and the TV 142, Isabel 130typically completes the installation of the set-top box via the computer110, which has the integrated multimedia software product installedthereon. At or near the completion of installation of the set-top box'ssoftware and configuration data at the computer 110, the network tuner100 is executed in order to determine if current network performancecould result in a less-than-ideal experience and if so, the tuner helpsIsabel with fine tuning of the networking environment. Using thenetwork-performance tuner 100, a user (such as Isabel 130) may adjusther networking environment to maximize network throughput of her homewireless network.

Streaming high fidelity multimedia (e.g., video and audio) data over ahome network pushes commonly available and affordable home wirelessnetworking technologies to their limits. High fidelity multimedia isstreamed between the computer 110 and the set-top box 140. Consequently,the network-performance tuner 100 is packaged with the set-top box 140,so that Isabel has the opportunity to optimize her network's performancewhen the set-top box is first installed in her network. The tuner 100helps Isabel 130 find any performance issues early and solve themquickly and avoid a frustrating customer service call. Addressing anynetwork performance issues at installation time, when Isabel 130 isexpecting to spend some time setting up, rather than later in the middleof a TV show, enhances Isabel's overall product experience.

Initially, the network tuner 100 performs a quick-test which provides aninitial evaluation of the network throughput and, as its name implies,is performed relatively quickly (e.g., approximately thirty seconds orless). If the results of the quick-test are above a defined “quick-testthreshold,” then the tuner informs Isabel that her network's throughputis sufficient and that no further fine-tuning is necessary.

The quick-test employs any available (e.g., conventional or new)techniques for measurement of bandwidth over a data communicationsnetwork (e.g., a wireless network), which provides an initial evaluationof network bandwidth when performed for thirty seconds or less. Duringthe quick-test, the network tuner 100 may, for example, mathematicallyintegrate test samples to simulate receive-end buffer starvation andcheck to see if it falls below a threshold (e.g., the quick-testthreshold). If during the quick-test, the tuner 100 determines that thereceive-end buffer would have starved, the tuner aborts the test earlyand indicate that tuning is needed. In at least one implementation, thequick-test may be called a “buffer starvation analysis.”

The quick-test threshold may be defined as a heuristically or manuallydetermined throughput level that is regarded as sufficient to deliverhigh-fidelity multimedia (or other desired data for transmission). Forexample, eight Mbits/sec may be regarded as sufficient for streamingconventional common multimedia (which typically streams at about 6-7Mbits/sec). In another example, twenty-two Mbits/sec may be regarded assufficient for streaming HDTV-level multimedia (which typically streamsat about 18 Mbits/sec). Furthermore, to avoid the possibilities ofglitches, the network should sustain a measured throughput above thethreshold throughout the entirety of the test or for a defined timeperiod.

A key objective of the quick-test is to avoid exposure of unnecessarycomplexity to those users who have a network with more than sufficientbandwidth (e.g., a fully wired network). If a quick test of the networkbandwidth indicates that it is more than sufficient, the tuner informsIsabel 130, and the setup of the set-top box finishes.

If the quick-test indicates that the bandwidth is marginal or clearlyinsufficient, then the tuner 100 directs Isabel 130 through a morecomplex procedure, which helps Isabel take action that may improvenetwork throughput. The tuner 100 presents a user-interface (UI) toIsabel 130 that informs her that she could potentially have problemsusing high-fidelity multimedia with the set-top box 140.

In order to get a good experience, users frequently need to takeadditional actions to adjust the networking environment. The users mayneed to reduce obstructions in the wireless path between componentsand/or make fine adjustments to the wireless equipment to maximize theirnetwork throughput.

The UI suggests that Isabel perform a more thorough network throughputtest and, during that test, Isabel may adjust her network environment inan attempt to improve the network's bandwidth. For this more thoroughnetwork throughput test, the tuner 100 measures network performance andprovides a user-feedback mechanism regarding network performance. Thetuner presents a UI with a continually running graph, indicating thepresent and recent throughput of the network.

The thorough network throughput test employs any available (e.g.,conventional or new) techniques for measurement of bandwidth over a datacommunications network (e.g., a wireless network), which provides arelatively accurate measurement of the bandwidth.

The thorough network throughput test runs as long as the user desires.During that thorough network throughput test, the network tuner 100utilizes a low-pass filter on the test samples for a graphicalpresentation that approximates receive-end buffer fullness. In at leastone implementation, the thorough network throughput test may be called a“buffer fullness simulation.”

During this thorough and continually running bandwidth measurement test,the tuner 100 measures network bandwidth between two endpoints (e.g.,the computer 110 and the set-top box 140) without regard to what type ofnetwork components exist between the endpoints and without regard towhich endpoint, if any, is connected wirelessly. This allows fordetection of bandwidth-impeding problems, even on completely wirednetworks or networks using equipment from many different manufacturers.

FIGS. 2 and 3 illustrate examples of UIs (specifically UI 200 of FIG. 2and UI 300 of FIG. 3) that the tuner may employ. These example UIs offera simplified view to limit end-user confusion. These UIs provide theuser feedback.

As Isabel 130 takes actions, with the intent of improving networkbandwidth, she sees the results of her actions in real-time on thegraphical UI such as those of FIGS. 2 and 3. By actively monitoring thethroughput via the graphical UI display of the tuner 100, Isabel candetermine how her actions affect the network throughput.

The UIs 200 and 300 clearly communicate a target level or range that is“acceptable.” At that target level, the network throughput is sufficientto support a specified purpose, such as streaming glitch-freehigh-fidelity multimedia data. Each specified purpose may have apre-defined, heuristically determined, or a calculated acceptable level.

In the realm of high-fidelity multimedia data transmissions, the“acceptable” target level or range may be defined as the throughputlevel that is sufficient to deliver high-fidelity multimedia data. Asmentioned earlier in discussion of the quick-test, eight Mbits/sec isregarded as sufficient for streaming typical multimedia, and twenty-twoMbits/sec is regarded as sufficient for streaming HDTV-level multimedia.Furthermore, to avoid the possibilities of glitches, the measuredthroughput should be sustainable within the “acceptable” target range.

For example, Isabel may view a bar-graph monitor 210 of the UI 200. Thedark bars indicate a relative measure of network throughput. Area 220 islabeled “Acceptable Performance” to indicate that the network throughputwill be acceptable for the desired purpose (e.g., streaming multimedia).The “Acceptable Performance” range is reached when one or more of thesebars are darkened.

In this example, assume that Isabel takes action to improve bandwidth.As a result, Isabel may see bar-graph monitor 310 of UI 300. The darkbars are now in the area 320 labeled “Acceptable Performance.”Consequently, Isabel knows that her efforts have improved networkperformance.

Furthermore, the network-performance tuner 100 may employ an audio UIthroughput indicator. An audio signal may indicate a relative degree ofthroughput. That way, a user may “hear” the available bandwidth fromanother room when the user is unable to see the screen displaying thebars or the graph. For example if a user was making very minor tweaks tothe position of their wireless networking components antennas they mightbe doing so in a completely isolated room of the house. In this caseinstead of making very minor tweaks over-and-over then running back tothe display to see how the last modification affected performance ifthey could just turn the volume up loud on the device that was runningthe performance tuner then ideally it would make a different sound whenthey were in the “acceptable” range then when they were in the“unacceptable” range and they'd easily be able to distinguish thisallowing them to stay in one room and make the tweaks continually onlystopping when the sound indicated they were successful.

FIG. 4 illustrates a UI 400, which is an example of another view of thenetwork throughput. The UI 400 is an example of an easily accessible,detailed view showing valuable historical throughput information as aline graph. This UI also has an “acceptable performance” target line,which is shown at 420 in UI 400.

FIGS. 2 and 3 show a clickable button (240 in FIG. 2 and 340 in FIG. 3)that allows for easy access to the detailed view of UI 400. Similarly,FIG. 4 shows a clickable button 440 that allows for easy access to thesimplified summary view of UIs 200 and 300.

Via a link to one or more websites (on the Internet), the tuner 100 maylist the detailed and in-depth suggestions and tips forperformance-improving actions. These detailed and in-depth suggestionsmay be discovered through product support channels. Alternatively, thetuner may present a list or a document with static and/or dynamicallygenerated data. The data details suggestions for actions that Isabel canadminister to improve the performance of the network.

Examples of suggested performance-improving actions are shown at 230 inUI 200 and 330 in UI 300. Other examples include (by way of example onlyand not limitation) the following:

-   -   Move one or more wireless access points (WAPs). Moving the WAP        just six inches can make an appreciable difference. If possible,        it may be helpful to move a WAP to a different room.    -   Move the set-top box 140. Again, just a small movement of 6-12        inches may make a noticeable difference.    -   Reorient antenna on the one or more WAPs.    -   Reorient antenna on the set-top box 140.    -   Change network topology. For example, modifying the components        and/or fundamental structure of the network changes the network        topology.    -   Switch to a different wireless network band if possible. For        example, a suggestion to change from the popular and inexpensive        Wireless-B (IEEE 802.11b) equipment to the newer and, almost        five times faster, Wireless-G (IEEE 802.11g) equipment.    -   Change to a different channel within the band. Each wireless        network band offers multiple channels. Some may perform better        than others.    -   Move obstructions in the path. FIG. 1 shows several obstructions        (150 and 152) in the signal path of the home's wireless network.        In particular, the depicted obstructions 150 and 152 are        houseplants.    -   Adjust interfering items. FIG. 1 shows several microwave oven        160 producing interference waves 162 in the signal path of the        home's wireless network. In addition, FIG. 1 shows that a        neighbor's wireless network is producing interference 170.

After Isabel follows one or more of the suggestions, she watches thetuner's UI to see how her actions affect the current bandwidthmeasurement. Hopefully, Isabel discovers one or more suggested actionsthat successfully raise the bandwidth to an acceptable and sustainablelevel.

Once the network throughput reaches a sustainable and acceptable level,Isabel terminates the tuner 100. With the set-top box 140 in thiswell-tuned wireless network, Isabel and her family watch the TV 142 inthe living room 122 and enjoy the great video from the computer 110,which is located in the study 128.

As described above, the tuner 100 is integrated with the installationprocess of the set-top box 140. Of course, in other implementations, thetuner 100 may be available as a standalone utility and may operateseparately from the set-top box installation process. Since conditionschange in the networking environment (which includes the physicalenvironment in which the network operates), the throughput of thenetwork may change. At any time, Isabel may run the tuner as astandalone utility to help improve network performance.

While the discussions herein focus on wireless networks, those ofordinary skill in the art understand and appreciate that thedata-communications networks environment is not limited to wirelessnetworks. It is also not limited to a home-networking environment.Therefore, unless the context indicates otherwise, the techniquesdescribed herein operate within and on any data-communications networkhaving a bandwidth or throughput, which is capable of being measured.

Exemplary Network-Performance Tuner

FIG. 5 illustrates operational details of the network-performance tuner100. Because this is the same tuner 100 discussed and referenced in FIG.1, the tuner shown in FIG. 5 retains the 100 reference designation.Although the operational components of FIG. 5 are shown as being part ofthe tuner 100, those of ordinary skill in the art understand that eachoperational component and sub-component may be incorporated into one ormore entities other than the tuner.

As shown in FIG. 5, the components of the network-performance tuner 100include a network-bandwidth quick-tester 510, a network-bandwidth meter520, a corrective action suggestion mechanism 530, and anetwork-bandwidth monitor 540.

After a set-top box installer 550 has completed (or nearly completed)installation of configuration data and software for the set-top box, thenetwork-bandwidth quick-tester 510 of the tuner 100 takes over. In ashort time (e.g., 20-30 seconds), the quick-tester performs a quickevaluation of the bandwidth of a subject network 560 between the tunerand the set-top box.

If that quick evaluation indicates that the network's bandwidth is morethan sufficient, then the tuner 100 skips the remaining functionalcomponents illustrated in FIG. 5. If the evaluated bandwidth is notclearly sufficient, then the network-bandwidth meter 520 begins toperform a more thorough measurement of the network 560 bandwidth. Untilterminated, the meter continues to measure bandwidth.

A corrective action suggestion mechanism 530 acquires a static documentthat lists some suggested actions that the user may take to improvenetwork throughput. This static document may be stored on a samecomputer-readable medium, which is the source of the tuner'sinstallation software. Instead, the suggestion mechanism may acquire thestatic document from any accessible source (e.g., via the Internet) orit may provide a link to an updatable document located on any accessiblesource (e.g., via the Internet). Alternatively, the suggestion mechanism530 may dynamically generate a list of suggested actions from one ormore sources (including, for example, websites on the Internet).

In the realm of personal computers, an implementation may employ asoftware user-interface tool to interrogate a user. That tools may becalled a “wizard.” This wizard may ask the user questions about thingsthat could affect network performance in an effort to narrow down thelist of possible corrective action suggestions. Indeed, the informationproduced by the wizard aids or directs the suggestion mechanism 530 whenit dynamically generates a list of suggested actions from one or moresources For example, the wizard might up-front ask the user if they havean 802.11g or 802.11a wireless network. Based upon the user's responses,the suggestion mechanism 530 knows that some suggestions apply and otherdo not apply.

Furthermore, there may be additional detection software or mechanismthat automatically discovers information, properties, andcharacteristics about the network (without interrogating a user). Thesuggestion mechanism 530 tailors its suggestions based, at least inpart, on the automatically discovered information, properties, andcharacteristics about the network. For example, detection software maydetect that a user is running on an 802.11g network and that thewireless networking “channel” chosen is conflicting with a nearbywireless network. In such an instance, the suggestion mechanism 530gives the user a very pointed suggestion about changing their wirelessnetworking channel to another channel where no interference is detected.

Based upon the list provided by the suggestion mechanism 530 and thepresent network-bandwidth as measured by the meter 520, thenetwork-bandwidth monitor 540 generates one or more user-interfaces(UIs) on an output device 570 (e.g., a computer monitor). The generatedUI presents the list provided by the suggestion mechanism 530 andgraphically represents the network-bandwidth as measured by the meter520. Examples of UIs that may be presented by the network-bandwidthmonitor 540 include UIs 200, 300, and 400 as shown in FIGS. 2-4.

Methodological Implementation

FIG. 6 shows a method 600 performed by the network-performance tuner100. This methodological implementation may be performed in software,hardware, or a combination thereof. For ease of understanding, themethod is delineated as separate steps represented as independent blocksin FIG. 6; however, these separately delineated steps should not beconstrued as necessarily order dependent in their performance.Additionally, for discussion purposes, the method 600 is described withreference to FIG. 1.

At 602 of FIG. 6, the computer 110 completes installation of thewireless multimedia set-top box 140. When the network-performance tuner100 is functioning standalone, block 602 is skipped.

At 604, the tuner 100 performs a quick-test to rapidly evaluate networkthroughput of a subject network.

If, at 606, the tuner 100 determines that the network throughput isclearly sufficient to support heavy data transmission loads, then itterminates the method 600 at 606. Otherwise, the method proceeds to thenext block, which is 610. At 610, the tuner 100 informs the user of thepossibility of network performance issues.

Blocks 612-At 620 form a loop that the tuner 100 performs until the userterminates the loop or some other trigger event (e.g., a timeout)occurs.

At 614, the tuner measures network throughput.

At 616, the tuner displays the present network throughput via a networkperformance monitor UI. That UI also displays an indication of the levelof throughput necessary to be considered an acceptable level for thedesired purpose. For example, the desired purpose may be transmission ofHDTV quality multimedia over a wireless network. Each desired purposemay have a pre-defined or a calculated acceptable level.

Of course, the network throughput measurement of block 614 and thedisplay of that throughput via a UI of block 616 may occur concurrently.

At 618, the tuner displays a list of suggestions for improving networkthroughput (and/or a link to such suggestions found on a website on theInternet).

At 620, the process loops back to block 612. The looping continues untilthe user terminates the loop or some other trigger (e.g., timeout)occurs.

Exemplary Computing System and Environment

FIG. 7 illustrates an example of a suitable computing environment 700within which an exemplary network-performance tuner, such as tuner 100as described herein, may be implemented (either fully or partially). Thecomputing environment 700 may be utilized in the computer and networkarchitectures described herein.

The exemplary computing environment 700 is only one example of acomputing environment and is not intended to suggest any limitation asto the scope of use or functionality of the computer and networkarchitectures. Neither should the computing environment 700 beinterpreted as having any dependency or requirement relating to any oneor combination of components illustrated in the exemplary computingenvironment 700.

The exemplary network-performance tuner may be implemented with numerousother general purpose or special purpose computing system environmentsor configurations. Examples of well known computing systems,environments, and/or configurations that may be suitable for useinclude, but are not limited to, personal computers, server computers,thin clients, thick clients, hand-held or laptop devices, multiprocessorsystems, microprocessor-based systems, set top boxes, personal digitalassistants (PDA), appliances, special-purpose electronics (e.g., a DVDplayer), programmable consumer electronics, network PCs, minicomputers,mainframe computers, distributed computing environments that include anyof the above systems or devices, and the like.

The exemplary network-performance tuner may be described in the generalcontext of computer-executable instructions, such as program modules,being executed by a computer. Generally, program modules includeroutines, programs, objects, components, data structures, etc. thatperform particular tasks or implement particular abstract data types.The exemplary network-performance tuner may also be practiced indistributed computing environments where tasks are performed by remoteprocessing devices that are linked through a data-communicationsnetwork. In a distributed computing environment, program modules may belocated in both local and remote computer storage media including memorystorage devices.

The computing environment 700 includes a general-purpose computingdevice in the form of a computer 702. The components of computer 702 mayinclude, but are not limited to, one or more processors or processingunits 704, a system memory 706, and a system bus 708 that couplesvarious system components, including the processor 704, to the systemmemory 706.

The system bus 708 represents one or more of any of several types of busstructures, including a memory bus or memory controller, a peripheralbus, an accelerated graphics port, and a processor or local bus usingany of a variety of bus architectures. By way of example, sucharchitectures can include a CardBus, Personal Computer Memory CardInternational Association (PCMCIA), Accelerated Graphics Port (AGP),Small Computer System Interface (SCSI), Universal Serial Bus (USB), IEEE1394, a Video Electronics Standards Association (VESA) local bus, and aPeripheral Component Interconnects (PCI) bus, also known as a Mezzaninebus.

Computer 702 typically includes a variety of computer-readable media.Such media may be any available media that is accessible by computer 702and includes both volatile and non-volatile media, removable andnon-removable media.

The system memory 706 includes computer-readable media in the form ofvolatile memory, such as random access memory (RAM) 710, and/ornon-volatile memory, such as read only memory (ROM) 712. A basicinput/output system (BIOS) 714, containing the basic routines that helpto transfer information between elements within computer 702, such asduring start-up, is stored in ROM 712. RAM 710 typically contains dataand/or program modules that are immediately accessible to and/orpresently operated on by the processing unit 704.

Computer 702 may also include other removable/non-removable,volatile/non-volatile computer storage media. By way of example, FIG. 7illustrates a hard disk drive 716 for reading from and writing to anon-removable, non-volatile magnetic media (not shown), a magnetic diskdrive 718 for reading from and writing to a removable, non-volatilemagnetic disk 720 (e.g., a “floppy disk”), and an optical disk drive 722for reading from and/or writing to a removable, non-volatile opticaldisk 724 such as a CD-ROM, DVD-ROM, or other optical media. The harddisk drive 716, magnetic disk drive 718, and optical disk drive 722 areeach connected to the system bus 708 by one or more data mediainterfaces 725. Alternatively, the hard disk drive 716, magnetic diskdrive 718, and optical disk drive 722 may be connected to the system bus708 by one or more interfaces (not shown).

The disk drives and their associated computer-readable media providenon-volatile storage of computer readable instructions, data structures,program modules, and other data for computer 702. Although the exampleillustrates a hard disk 716, a removable magnetic disk 720, and aremovable optical disk 724, it is to be appreciated that other types ofcomputer-readable media, which may store data that is accessible by acomputer, such as magnetic cassettes or other magnetic storage devices,flash memory cards, CD-ROM, digital versatile disks (DVD) or otheroptical storage, random access memories (RAM), read only memories (ROM),electrically erasable programmable read-only memory (EEPROM), and thelike, may also be utilized to implement the exemplary computing systemand environment.

Any number of program modules may be stored on the hard disk 716,magnetic disk 720, optical disk 724, ROM 712, and/or RAM 710, including,by way of example, an operating system 726, one or more applicationprograms 728, other program modules 730, and program data 732.

A user may enter commands and information into computer 702 via inputdevices such as a keyboard 734 and a pointing device 736 (e.g., a“mouse”). Other input devices 738 (not shown specifically) may include amicrophone, joystick, game pad, satellite dish, serial port, scanner,and/or the like. These and other input devices are connected to theprocessing unit 704 via input/output interfaces 740 that are coupled tothe system bus 708, but may be connected by other interface and busstructures, such as a parallel port, game port, or a universal serialbus (USB).

A monitor 742 or other type of display device may also be connected tothe system bus 708 via an interface, such as a video adapter 744. Inaddition to the monitor 742, other output peripheral devices may includecomponents, such as speakers (not shown) and a printer 746, which may beconnected to computer 702 via the input/output interfaces 740.

Computer 702 may operate in a networked environment using logicalconnections to one or more remote computers, such as a remote computingdevice 748. By way of example, the remote computing device 748 may be apersonal computer, a portable computer, a server, a router, a networkcomputer, a peer device or other common network node, and the like. Theremote computing device 748 is illustrated as a portable computer thatmay include many or all of the elements and features described herein,relative to computer 702.

Logical connections between computer 702 and the remote computer 748 aredepicted as a local area network (LAN) 750 and a general wide areanetwork (WAN) 752. Such networking environments are commonplace inoffices, enterprise-wide computer networks, intranets, and the Internet.Such networking environments may be wired or wireless.

When implemented in a LAN networking environment, the computer 702 isconnected to a local network 750 via a network interface or adapter 754.When implemented in a WAN networking environment, the computer 702typically includes a modem 756 or other means for establishingcommunications over the wide network 752. The modem 756, which may beinternal or external to computer 702, may be connected to the system bus708 via the input/output interfaces 740 or other appropriate mechanisms.It is to be appreciated that the illustrated network connections areexemplary and that other means of establishing communication link(s)between the computers 702 and 748 may be employed.

In a networked environment, such as that illustrated with computingenvironment 700, program modules depicted, relative to the computer 702or portions thereof, may be stored in a remote memory storage device. Byway of example, remote application programs 758 reside on a memorydevice of remote computer 748. For purposes of illustration, applicationprograms and other executable program components, such as the operatingsystem, are illustrated herein as discrete blocks, although it isrecognized that such programs and components reside at various times indifferent storage components of the computing device 702, and areexecuted by the data processor(s) of the computer.

Computer-Executable Instructions

An implementation of an exemplary network-performance tuner may bedescribed in the general context of computer-executable instructions,such as program modules, executed by one or more computers or otherdevices. Generally, program modules include routines, programs, objects,components, data structures, etc. that perform particular tasks orimplement particular abstract data types. Typically, the functionalityof the program modules may be combined or distributed as desired invarious embodiments.

Exemplary Operating Environment

FIG. 7 illustrates an example of a suitable operating environment 700 inwhich an exemplary network-performance tuner may be implemented.Specifically, the exemplary network-performance tuner(s) describedherein may be implemented (wholly or in part) by any program modules728-730 and/or operating system 726 in FIG. 7 or a portion thereof.

The operating environment is only an example of a suitable operatingenvironment and is not intended to suggest any limitation as to thescope or use of functionality of the exemplary network-performancetuner(s) described herein. Other well known computing systems,environments, and/or configurations that are suitable for use include,but are not limited to, personal computers (PCs), server computers,hand-held or laptop devices, multiprocessor systems,microprocessor-based systems, programmable consumer electronics,wireless phones and equipment, general and special-purpose appliances,application-specific integrated circuits (ASICs), network PCs,minicomputers, mainframe computers, distributed computing environmentsthat include any of the above systems or devices, and the like.

Computer-Readable Media

An implementation of an Error! Reference source not found. may be storedon or transmitted across some form of computer-readable media.Computer-readable media may be any available media that may be accessedby a computer. By way of example, computer-readable media may comprise,but is not limited to, “computer storage media.”

“Computer storage media” include volatile and non-volatile, removableand non-removable media implemented in any method or technology forstorage of information such as computer readable instructions, datastructures, program modules, or other data. Computer storage mediaincludes, but is not limited to, RAM, ROM, EEPROM, flash memory or othermemory technology, CD-ROM, digital versatile disks (DVD) or otheroptical storage, magnetic cassettes, magnetic tape, magnetic diskstorage or other magnetic storage devices, or any other medium which maybe used to store the desired information and which may be accessed by acomputer.

Conclusion

The techniques, described herein, may be implemented in many ways,including (but not limited to) program modules, general- andspecial-purpose computing systems, network servers and equipment,dedicated electronics and hardware, and as part of one or more computernetworks. The techniques may, for example, be implemented on a computersystem depicted in FIG. 7.

Although the one or more above-described implementations have beendescribed in language specific to structural features and/ormethodological steps, it is to be understood that other implementationsmay be practiced without the specific features or steps described.Rather, the specific features and steps are disclosed as preferred formsof one or more implementations.

1. A method facilitating improvements in throughput of adata-communications network, the method comprising: measuring, at acomputer executing a network tuner, the throughput over thedata-communications network and between at least two endpoints on thedata-communications network; displaying, at an output device associatedwith the computer, a user interface tool to gather information affectingperformance of the data-communications network; automaticallydiscovering properties and characteristics of the data-communicationsnetwork by operation of software; suggesting corrective actions forapplication to the data-communications network, the suggesting performedby display, at the output device, of a dynamically generated list ofsuggested actions, the dynamically generated list based in part ondirection from the user interface tool and the discovered properties andcharacteristics, the dynamically generated list comprising instructionsfor: moving a wireless access point; reorienting an antenna; or movingan obstruction; displaying a graphical representation at the outputdevice, the graphical representation depicting a present throughput ofthe data-communications network, the graphical representation having anidentified target throughput threshold, the identified target throughputthreshold being indicative of an acceptable level of the throughput forthe data-communications network; providing an audio signal having afirst sound when the throughput is above the identified targetthroughput threshold and a second sound when the throughput is below theidentified target throughput threshold, the first and second soundsaudible while adjustments are made to an environment within which thedata-communications network operates according to the suggestedcorrective actions, the audio signal switching between the first andsecond sounds in response to changes in the throughput resulting fromthe adjustments to the environment; and determining whether thethroughput of the data-communications network exceeds the identifiedtarget throughput threshold for a specified period of time.
 2. A methodas recited in claim 1, wherein the data-communications network comprisesa wireless network.
 3. A method as recited in claim 1, wherein thedata-communications network comprises a local wireless network locatedin a building.
 4. A method as recited in claim 1, wherein the identifiedtarget throughput threshold is part of an identified target throughputrange.
 5. A method as recited in claim 1, wherein the acceptable levelof throughput for the data-communications network is based upontransmission of high fidelity multimedia data over thedata-communications network.
 6. A method as recited in claim 1 furthercomprising installing software and setting configuration data for anetwork-coupled multimedia set-top, the network-coupled multimediaset-top being one of the at least two endpoints, wherein the measuringoccurs while installing the software and setting the configuration datafor the network-coupled multimedia set-top.
 7. A method as recited inclaim 1 further comprising providing a link to a network accessibledocument which lists suggested actions that the user may take to improvethe throughput of the data-communications network.
 8. A method asrecited in claim 1 further comprising displaying an additional graphicalrepresentation at the output device, the additional graphicalrepresentation depicting the throughput of the data-communicationsnetwork over time as the throughput is measured, and the additionalgraphical representation having the identified target throughputthreshold, the identified target throughput threshold being indicativeof the acceptable level of the throughput for the data-communicationsnetwork.
 9. A method as recited in claim 1, wherein the graphicalrepresentation depicting the measured throughput of thedata-communications network is a bar graph.
 10. A method facilitatingimprovements in bandwidth of a data-communications network, the methodcomprising: performing, at a computer executing a network tuner, aquick-test bandwidth measurement of the bandwidth over thedata-communications network and between at least two endpoints on thedata-communications network, the quick-test bandwidth measurement beingan evaluation of the bandwidth over the data-communications network andbetween the at least two endpoints, the performing occurring over adefined time-period, the quick-test bandwidth measurement comprisingmathematically integrating test samples to simulate receive-end bufferstarvation, and if a determination is made that the receive-end bufferwould have starved, aborting the quick-test bandwidth measurement andindicating that tuning is needed; determining whether the quick-testbandwidth measurement exceeds a defined quick-test threshold at thecomputer; and if the quick-test bandwidth measurement falls below thedefined quick-test threshold, then performing operations comprising:measuring, at the computer, the bandwidth over the data-communicationsnetwork and between the at least two endpoints on thedata-communications network, the measuring occurring over an indefinitetime-period; utilizing a low-pass filter on the test samples to create agraphical presentation that approximates receive-end buffer fullness;displaying, at an output device associated with the computer, a userinterface tool to gather information affecting performance of thedata-communications network; automatically discovering properties andcharacteristics of the data-communications network by operation ofsoftware; suggesting corrective actions for application to thedata-communications network, the suggesting performed by display at theoutput device of a dynamically generated list of suggested actions, thedynamically generated list based in part on direction from the userinterface tool and the discovered properties and characteristics, thedynamically generated list comprising instructions for: moving awireless access point; reorienting an antenna; and moving anobstruction; displaying the graphical representation at the outputdevice, the graphical representation depicting the bandwidth of thedata-communications network as the bandwidth is measured, the graphicalrepresentation having an identified target bandwidth range, theidentified target bandwidth range being indicative of an acceptablelevel of the bandwidth for the data-communications network; andproviding an audio signal having a first sound when the bandwidth of thedata-communications network is above the quick-test threshold and asecond sound when the bandwidth is below the quick-test threshold, thefirst and second sounds audible while adjustments are made to anenvironment within which the data-communications network operatesaccording to the suggested corrective actions, the audio signalswitching between the first and second sounds in response to changes inthe bandwidth resulting from the adjustments to the environment.
 11. Amethod as recited in claim 10, wherein the defined quick-test thresholdand the acceptable level of the bandwidth for the data-communicationsnetwork are based upon one of a plurality of multimedia types providedby the data-communications network.
 12. A method as recited in claim 10further comprising installing software and setting configuration datafor a network-coupled multimedia set-top, the network-coupled multimediaset-top being one of the at least two endpoints.
 13. A method as recitedin claim 10 further comprising providing a link to a network accessibledocument which lists suggested actions that a user may take to improvethe bandwidth of the data-communications network.
 14. A method asrecited in claim 10 further comprising displaying an additionalgraphical representation at the output device, the additional graphicalrepresentation depicting the bandwidth of the data-communicationsnetwork over time as the bandwidth is measured, the additional graphicalrepresentation having the identified target bandwidth range, theidentified target bandwidth range being indicative of an acceptablelevel of the bandwidth for the data-communications network.
 15. One ormore computer-readable memory storage devices having computer-executableinstructions stored thereon that, when read from the computer-readablememory storage devices and executed by a computer, cause the computer toperform operations comprising: measuring bandwidth over adata-communications network and between at least two endpoints on thedata-communications network, the measuring occurring over auser-specified time-period; displaying a user interface tool to gatherinformation submitted by the user affecting performance of thedata-communications network; automatically discovering properties andcharacteristics of the data-communications network by operation ofsoftware; presenting a dynamically generated list of suggestedcorrective actions, the dynamically generated list based on theinformation submitted by the user and received through the userinterface tool and based on the properties and characteristics of thedata-communications network that were discovered, the suggestedcorrective actions comprising instructions for: moving a wireless accesspoint; changing network topology; reorienting an antenna; moving anobstruction; and moving interfering items; displaying a graphicalrepresentation depicting a present bandwidth of the data-communicationsnetwork as the bandwidth is measured, the graphical representationhaving an identified target bandwidth threshold, the threshold beingindicative of an acceptable level of the bandwidth for thedata-communications network; and providing an audio signal having afirst sound when the bandwidth is above the identified target bandwidththreshold and a second sound when the bandwidth is below the identifiedtarget bandwidth threshold, the first and second sounds audible whileadjustments are made to an environment within which thedata-communications network operates according to the suggestedcorrective actions, the audio signal switches between the first andsecond sounds in response to changes in bandwidth resulting from theadjustments to the environment.